package ag;

import java.util.LinkedList;

public class TorneoBinario extends Selector {

	public static Individuo mejor = null;
	
	private int maxIndividuos;
	
	@Override
	public LinkedList<Individuo> seleccionar(LinkedList<Individuo> poblacion) {
		LinkedList<Individuo> nuevaPoblacion = new LinkedList<Individuo>();
		
		int individuos = poblacion.size();
		Individuo [] vPoblacion = poblacion.toArray(new Individuo[individuos]);
		int s = 0;

		while(s < maxIndividuos){
			s++;
			int i = (int) (Math.random()*((double)individuos));
			Individuo individuoA = vPoblacion[i];
			
			i = (int) (Math.random()*((double)individuos));
			Individuo individuoB = vPoblacion[i];

			if(individuoA.compareTo(individuoB) > 0){
				nuevaPoblacion.add(individuoA);
				medir(individuoA);
			} else {
				nuevaPoblacion.add(individuoB);
				medir(individuoB);
			}
		}
		
		return nuevaPoblacion;
	}

	
	private void medir(Individuo i){
		if (mejor == null ){
			mejor = i;
		} else {
			int diferencia = i.compareTo(mejor);
			
			if (diferencia > 0) {
				mejor = i;
			}
		}
	}


	public int getMaxIndividuos() {
		return maxIndividuos;
	}


	public void setMaxIndividuos(int maxIndividuos) {
		this.maxIndividuos = maxIndividuos;
	}
}
